import types
print(type(123))
print(type(abs))

print(type(123) == int )
print(type('123') == str)

print(type(abs) == types.BuiltinFunctionType) 
print(type((x for x in range(10)))==types.GeneratorType)
print(isinstance(111, int))
print(isinstance('aa', str))
print(isinstance([1, 2, 3], (tuple)))
print(isinstance([1, 2, 3], (list, tuple)))

#如果要获得一个对象的所有属性和方法，可以使用dir()函数，
#它返回一个包含字符串的list，比如，获得一个str对象的所有属性和方法：
print(dir('abc'))
print(len('abc'))
print('abc'.__len__())

print(dir(object))

print(hasattr(object, 'x'))

#可以传入一个default参数，如果属性不存在，就返回默认值
print(getattr(object, 'x', 404))